package cn.zqy.demo2.day08.File;


import java.io.File;
import java.io.IOException;

/**
 *  File类创建删除功能的方法
 *         - public boolean createNewFile() ：当且仅当具有该名称的文件尚不存在时，创建一个新的空文件。
 *         - public boolean delete() ：删除由此File表示的文件或目录。
 *         - public boolean mkdir() ：创建由此File表示的目录。
 *         - public boolean mkdirs() ：创建由此File表示的目录，包括任何必需但不存在的父目录。
 * */
public class Demo05MakeAndDelFile {
    public static void main(String[] args) throws IOException {
//        show01();
        System.out.println("========");
//        show02();
        System.out.println("=====");
        show03();
    }

    // 1.boolean createNewFile() ：当且仅当具有该名称的文件尚不存在时，创建一个新的空【文件】。
    /*
    * 返回值:布尔值
            true:文件不存在,创建文件,返回true
            false:文件存在,不会创建,返回false
        注意:
            1.此方法只能创建文件,不能创建文件夹
            2.创建文件的路径必须存在,否则会抛出异常
    */
    private static void show01() throws IOException {
        File f1 = new File("E:\\Javaspace\\learnJava\\src\\cn\\zqy\\demo2\\day08\\file\\aaa");
        boolean b1 = f1.createNewFile();
        System.out.println("b1: " + b1);  // true aaa  即使没有后缀名也是文件类型

        //
        File f2 = new File("src\\cn\\zqy\\demo2\\day08\\file\\abc.txt");
        boolean b2 = f2.createNewFile();
        System.out.println("b2: " + b2);

        // IOException: 系统找不到指定的路径。
        /*File f3 = new File("src\\cn\\zqy\\demo2\\day08\\fil\\abc.txt");
        boolean b3 = f3.createNewFile();  // 路径不存在,抛出IOException
        System.out.println(b3);*/
    }

    /*
    *   public boolean mkdir() ：创建单级空文件夹
        public boolean mkdirs() ：既可以创建单级空文件夹,也可以创建多级文件夹
        创建文件夹的路径和名称在构造方法中给出(构造方法的参数)
            返回值:布尔值
            true:文件夹不存在,创建文件夹,返回true
            false:文件夹存在,不会创建,返回false;构造方法中给出的路径不存在返回false
            注意:
                1.此方法只能创建文件夹,不能创建文件
    * */
    private static void show02() {
        // 好像有个bug，文件夹和文件同名，无法同事创建两个，如：把aaaa换为aaa，文件夹就和前面aaa文件重名了
        File f1 = new File("src\\cn\\zqy\\demo2\\day08\\file\\aaaa");
        boolean b1 = f1.mkdirs();
        System.out.println("b1: " + b1);  // false aaa 。true aaaa

        File f2 = new File("E:\\Javaspace\\learnJava\\src\\cn\\zqy\\demo2\\day08\\file\\111\\3213");
        boolean b2 = f2.mkdirs();
        System.out.println("b2: " + b2);  // true 111\3213

        // 视频1——8——1——07 14分00。出错
        File f3 = new File("src\\cn\\zqy\\demo2\\day08\\f\\aaaa");
        boolean b3 = f3.mkdirs();
        System.out.println("b3: " + b3);  // true 创建了文件
    }

    private static void show03(){
       /*
        public boolean delete() ：删除由此File表示的文件或目录。
        此方法,可以删除构造方法路径中给出的文件/文件夹
        返回值:布尔值
            true:文件/文件夹删除成功,返回true
            false:文件夹中有内容,不会删除返回false;构造方法中路径不存在false
        注意:
            delete方法是直接在硬盘删除文件/文件夹,不走回收站,删除要谨慎
     */
        File f1 = new File("src\\cn\\zqy\\demo2\\day08\\file\\aaaa");
        boolean b1 = f1.delete();
        System.out.println("b1: " + b1);  // 删除成功，返回true
    }
}
